0 REM" P.J.PONZO*83*WATERLOO/ONTARIO 1 [143]" 1000 GOSUB60000:PRINTCHR$(142):PRINT"[147] SPRITES-1" 1001 PRINT"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]" 1002 PRINT"[221]  SPRITES AND STUFF [146] [221]":MS$="PONZOTUTOR" 1003 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189][144]":GOSUB63100:MS$=" WELCOME!" 1004 GOSUB63100:FORI=0TO62:READ X:POKE832+I,X:NEXT:V=53248:POKE2040,13:POKEV+21,1 1005 POKEV+39,1:POKEV+1,100:A$=" " 1006 B$="THIS IS A SPRITE" 1007 POKEV+39,1:POKEV+1,100:FORX=0TO255STEP8:POKEV,X:PRINTLEFT$(A$,8+X1); 1008 PRINTRIGHT$(B$,31-X2):X2=X2-(X2<32):X1=X1+1:FORT=1TO10:NEXT:NEXT 1009 GOSUB63000:FORI=0TO15:POKEV+39,I:FORT=1TO150:NEXT:NEXT:POKEV+21,0 1010 MS$=" YUM YUM":GOSUB63100:PRINT"[147]IT IS EASY TO HAVE UP TO 8 'SPRITES'" 1020 PRINT"ON THE SCREEN AT ONE TIME." 1030 PRINT"LET'S LABEL THE SPRITES 0,1,..7." 1040 PRINT"PICK A NUMBER N (0 TO 7) AND" 1050 PRINT"A BLOCK OF MEMORY TO HOLD THE" 1060 PRINT"INFORMATION ON THE 'SHAPE' OF" 1065 PRINT"SPRITE #N." 1070 MS$="NICE SHAPE":GOSUB63100:GOSUB63000 1080 PRINT"[147]NOW A SPRITE IS MADE UP OF AN ARRAY" 1090 PRINT"OF 'PIXELS' OR 'DOTS' ON THE SCREEN." 1100 PRINT"24 DOTS WIDE AND 21 DOTS TALL." 1110 PRINT"(24*21=504 DOTS IN TOTAL)." 1120 PRINT"EACH DOT IS EITHER 'ON' OR 'OFF'" 1125 PRINT"AND WE CAN INDICATE THIS WITH" 1130 PRINT"A '1' OR '0' (1=ON[146] & 0=OFF[146])" 1140 PRINT"THE 'SHAPE' INFO CAN THEN BE" 1150 PRINT" STORED AS 504 BINARY DIGITS" 1155 PRINT"(BITS),EITHER '1' OR '0'." 1160 PRINT"SINCE WE STORE NUMBERS IN BYTES" 1170 PRINT"IT WILL TAKE 504/8=63 BYTES!" 1180 GOSUB63000 1200 PRINT"[147]WE WILL RESERVE 63[146] BYTES OF MEMORY" 1210 PRINT"(LET'S CALL THEM 'BLOCKS')" 1220 PRINT"FOR EACH SPRITE 'SHAPE'." 1230 PRINT"YOU TELL ME THE 'BLOCK' NUMBER" 1240 PRINT"AND I'LL KNOW WHERE TO LOOK" 1250 PRINT"FOR THE SPRITE SHAPE!" 1260 PRINT"IN FACT IF YOU SAY BLOCK 90[146]" 1270 PRINT"I'LL GO TO MEMORY LOCATION" 1280 PRINT"64*90=5760 TO GET THE FIRST OF" 1290 PRINT"THE 63 BYTES!":MS$="63 BITES?!":GOSUB63100:GOSUB63000 1300 PRINT"[147]OK..YOU PICK AN N[146] (THE SPRITE #)" 1310 PRINT"AND A B[146] (THE BLOCK NUMBER)." 1320 PRINT"HINT[157][157][157][157][184][184][184][184][145]:B=11,13,14 & 15" 1330 PRINT"ARE VERY NICE BLOCKS 'CAUSE" 1340 PRINT"THE 63 BYTES OF MEMORY STARTING" 1350 PRINT"AT 64*11=704[146],64*13=832[146],64*14=896" 1360 PRINT"AND 64*15=960[146] ARE AVAILABLE!" 1370 PRINT"(..LET'S SAY 'RESERVED' FOR SPRITES)." 1380 PRINT"THEN YOU MUST POKE[146] THE 1[146]'S" 1390 PRINT"AND 0[146]'S INTO THE BLOCK." 1395 PRINT"100 FORI=0TO62:READ X:POKE64*B+I,X:NEXT":GOSUB63000 1400 PRINT"[147]LET'S SAY THAT AGAIN:" 1410 PRINT"100 FORI=0TO62:READ X:POKE64*B+I,X:NEXT" 1420 PRINT"NOW YOU TELL THE C64 WHERE" 1430 PRINT"THE SPRITE SHAPE IS STORED." 1440 PRINT"FOR SPRITE N[146], YOU MUST:" 1450 PRINT"110 POKE 2040+N,B[146]:REM B=BLOCK #" 1460 PRINT"NOW TO HAVE SPRITE #N DISPLAYED" 1470 PRINT"ON THE SCREEN YOU MUST ENABLE" 1480 PRINT"THIS SPRITE.":MS$=" 2040+N[146]":GOSUB63100:GOSUB63000 1485 PRINT"[147]YOU'LL ALSO WANT TO PUT IT AT" 1486 PRINT"THE RIGHT PLACE ON THE SCREEN," 1487 PRINT"GIVE IT A NICE COLOUR, MOVE IT" 1488 PRINT"AROUND, MAKE IT BIGGER OR SMALLER" 1489 PRINT"AND OTHER CLEVER THINGS." 1490 PRINT"ALL THIS INFORMATION MUST GO TO" 1495 PRINT"THE VIDEO CHIP[146]!":MS$="NICE CHIP!":GOSUB63100:GOSUB63000 1500 PRINT"[147]THE VIDEO CHIP" 1501 PRINT"THIS SEXY CHIP HAS 47 INTERNAL" 1502 PRINT"MEMORY LOCATIONS OR REGISTERS[146]." 1505 PRINT"THEY START AT $D000[146] IN HEXADECIMAL" 1510 PRINT"(NICE) AND 53248[146] IN DECIMAL" 1520 PRINT"(NOT SO NICE). ANYWAY LET:" 1530 PRINT"120 V=53248:REM VIDEO CHIP BASE" 1540 PRINT"TO 'TURN ON' SPRITE #N:" 1550 PRINT"130 POKE V+21,2^N" 1560 PRINT"YES....THAT'S 2^N." 1561 MS$="TURN ME ON":GOSUB63100:GOSUB63000 1565 PRINT"[147]YOU SEE, THE REGISTER AT V+21" 1570 PRINT"WHICH 'ENABLES' SPRITES HAS 8 BITS." 1571 PRINT"WE LABEL THE BITS 0,1,...7" 1572 PRINT"(SOUND FAMILIAR?)" 1575 PRINT"EACH BIT CORRESPONDS TO A SPRITE." 1576 PRINT"TO 'SEE' SPRITE #5, TURN ON THE" 1577 PRINT"BIT #5!" 1578 PRINT"HOW? JUST POKE V+21,32[146]" 1580 PRINT"NOTE[157][157][157][157][184][184][184][184][145]: 2^5=32" 1581 MS$=" 00100000":GOSUB63100:GOSUB63000 1590 PRINT"[147]FOR OUR 'SPRITE #N' WE WILL:" 1595 PRINT"130 POKEV+21,2^N" 1596 PRINT"(YOU WON'T BE SURPRISED TO SEE" 1600 PRINT"THAT ANY OTHER SPRITES WILL" 1610 PRINT"DISAPPEAR!)" 1620 PRINT"IF YOU WANT SPRITE #0 AND[146] SPRITE #3" 1630 PRINT"AND[146] SPRITE #7 ALL[146] 'ENABLED' OR 'VISIBLE'" 1640 PRINT"THEN POKEV+21,1+8+128[146]" 1650 PRINT"NOTE:2^0+2^3+2^7=1+8+128 (NICE)!" 1660 PRINT"YOU WANT ALL 8 SPRITES? 1670 [153]"POKEV+21,255":MS$[178]" 10001001":[141]63100:[141]63000 1700 [153]"LOADSO FAR WE HAVE:" 1710 [153]"100 FORI=0TO62:READ X:POKE64*B+I,X:NEXT" 1720 [153]"110 POKE2040+N,B:REM WHERE SHAPE IS " 1730 [153]"120 V=53248: REM VIDEO CHIP BASE " 1740 [153]"130 POKEV+21,2^N:REM ENABLE SPRITE " 1750 [153]"..AND SPRITE #N IS ON THE SCREEN!" 1760 [153]"BUT WHERE AND WHAT COLOUR?!*+!" 1770 [153]"THERE ARE 16 COLOURS TO CHOOSE FROM." 1780 [153]"WE LABEL THEM 0,1,2,...15." 1790 [153]"TO MAKE SPRITE #N COLOUR #10" 1800 [153]"(A LIGHT RED) WE POKE ANOTHER" 1810 [153]"MAGIC REGISTER IN THE VIDEO CHIP."" 1820 PRINT"POKEV+39+N,10[146]:SPRITE #N IS RED!":GOSUB63000 1830 PRINT"[147]MAYBE WE SHOULD HAVE PICKED A" 1840 PRINT"COLOUR BEFORE[146] WE MADE THE SPRITE" 1845 PRINT"VISIBLE! THE LAST THING WE WANT" 1847 PRINT"TO DO IS TO DISPLAY OUR SPRITE" 1848 PRINT"BEFORE IT'S PRESENTABLE!" 1850 PRINT"ANYWAY, WE'LL FIX THAT UP LATER.":MS$=" PATIENCE":GOSUB63100 1855 GOSUB63000 1860 PRINT"[147]HOW ABOUT THE POSITION ON THE" 1870 PRINT"SCREEN? WELL THE C64 HAS 40 COLUMNS" 1880 PRINT"OR 'PRINT POSITIONS'. EACH IS" 1890 PRINT"8 'DOTS' WIDE. THAT MAKES 40*8=320" " 1891 [153]"DOTS HORIZONTALLY AND WE SHOULD" 1900 [153]"BE ABLE TO 'POSITION' OUR SPRITE #N" 1910 [153]"IN ANY OF 320 X-POSITIONS." 1920 [153]"ALSO, THE C64 HAS 25 ROWS, EACH " 1930 [153]"8 DOTS HIGH AND 25*8=200 SO THERE" 1950 [153]"WILL BE 200 POSSIBLE Y-POSITIONS" 1960 [153]"FOR OUR SPRITE.":[141]63000 1970 [153]"LOADWHERE DO WE PUT THIS X-POSITION &" 1980 [153]"Y-POSITION INFORMATION?" 1990 [153]"INTO ANOTHER V+SOMETHINGWAIT REGISTER." 2000 [153]"THIS TIME WE:" 2010 [153]"POKE V+2*N,X:POKE V+2*N+1,Y" 2020 [153]"AS LONG AS 'X' AND 'Y' ARE BOTH" 2025 [153]"LESS THAN 256 WE'RE IN GOOD SHAPE!" 2040 [153]"IN FACT WE COULD:" 2050 [153]"FOR T=0 TO 500 " 2060 [153]"X=T/2:Y=T/3 " 2066 [153]"POKE V+2*N,X:POKE V+2*N+1,Y" 2070 [153]"NEXT T ":[141]63000 2080 [153]"LOADHOW ABOUT SOMETHING CUTE LIKE:" 2090 [153]"FOR T=0 TO 500 " 2100 [153]"X=FNX(T):Y=FNY(T) " 2110 [153]"POKE V+2*N,X:POKE V+2*N+1,Y" 2120 [153]"NEXT T " 2130 [153]"THEN OUR SPRITE WOULD FOLLOW" 2140 [153]"A CURVE GIVEN BY SOME FUNCTIONS" 2150 [153]"FNX AND FNY, PREVIOUSLY DEFWAITINED." 2155 MS$[178]"DEF FNX(T)":[141]63100:[141]63000 2160 [153]"LOADIF YOU'D LIKE TO HAVE THE SPRITE" 2170 [153]"AT THE RIGHT ON THE SCREEN, IN" 2180 [153]"PIXEL POSITIONS 256 TO 320," 2190 [153]"THEN WE HAVE TO DO THE FOLLOWING:" 2210 [153]"TELL IT TO THE VIDEO CHIP!":MS$[178]"NICE CHAP!":[141]63100 2215 [141]63000 2220 [153]"LOADYET ANOTHER REGISTER, AT V+16, HAS" 2230 [153]"8 BITS, ONE FOR EACH OF 8 SPRITES," 2240 [153]"AND FOR SPRITE #N WE WILL" 2250 [153]"POKE V+16,2^N" 2260 [153]"THIS TURNS ON 'BIT #N' SO THAT" 2270 [153]"SPRITE #N WILL BE ABLE TO MOVE THRU'" 2280 [153]"X-POSITIONS 256 TO 320!":MS$[178]" 256-320!":[141]63100:[141]63000 2290 [153]"LOADNOTEWAIT:POKE V+16,32 WILL AFFECT THE" 2300 [153]"X-POSITION OF SPRITE #5 BY ADDING 256" 2310 [153]"TO THE VALUE OF X POKEWAITD INTO V+2*5" 2320 [153]"POKE V+2*5,50:REM X-POS'N IS 50" 2330 [153]"POKE V+16,32:REM ADD 256" 2340 [153]"THIS PUTS SPRITE #5 IN X-POS'N 306" 2341 MS$[178]" V+16WAIT":[141]63100:[141]63000 2345 [153]"LOADIF YOU WANT SPRITE #0 ANDWAIT SPRITE #3" 2350 [153]"ANDWAIT SPRITE #7 ALLWAIT 'AT THE RIGHT'" 2360 [153]"THEN PICK AN X0,X3 & X7:" 2370 [153]"POKE V+2*0,X0:REM X-POS'N OF #0" 2380 [153]"POKE V+2*3,X3:REM X-POS'N OF #3" 2390 [153]"POKE V+2*7,X7:REM X-POS'N OF #7" 2400 [153]"POKE V+16,1+8+128:ADD 256 TO ALL!" 2405 MS$[178]" V+2*NWAIT":[141]63100:[141]63000:[153]"LOADCHOOSE BLOCK 13 & SPRITE 3" 2406 [153]"AND MAKE ALL 'SHAPE' BYTES=240WAIT" 2407 [153]" 99 B=13:N=3 " 2410 [153]"100 FORI=0TO62:X=240:POKE64*B+I,X:NEXT " 2420 [153]"110 POKE2040+3,B: REM WHERE SHAPE IS " 2430 [153]"120 V=53248: REM VIDEO CHIP BASE " 2440 [153]"130 POKE V+39+N,10:REM RED SPRITE " 2450 [153]"140 POKEV+21,2^N: REM ENABLE SPRITE " 2460 [153]"150 FOR T=0 TO 500 STEP 5 " 2470 [153]"160 X=T/2:Y=180+T/5 " 2475 [153]"170 POKE V+2*N,X:POKE V+2*N+1,Y " 2480 [153]"180 NEXT T ":[141]4000 2485 MS$[178]" YUM !!! WAIT":[141]63100 2490 [153]"ONONONONONONTHAT'S FOR ONE SPRITE..N=3":[151]V[170]21,0 2500 [153]"LET'S HAVE 3 SPRITES..#0, #3 AND #7.":[141]63000 2510 [153]"LOAD100 FORI=0TO62:READ X:POKE64*B+I,X:NEXT":[141]2600 2520 [153]"110 POKE2040+0,B: REM #0'SHAPE BLOCK' ":[141]2610 2521 [153]"111 POKE2040+3,B: REM #3'SHAPE BLOCK' ":[141]2620 2522 [153]"112 POKE2040+7,B: REM #7'SHAPE BLOCK' ":[141]2630 2530 [153]"120 V=53248: REM VIDEO CHIP BASE ":[141]2640 2540 [153]"130 POKE V+39+0,10:REM #0 IS RED ":[141]2650 2541 [153]"131 POKE V+39+3,12:REM #3 IS WHITE ":[141]2660 2542 [153]"132 POKE V+39+7,14:REM #7 IS BLUE ":[141]2670 2550 [153]"140 POKEV+21,1+8+128:REM ENABLE SPRITES":[141]2680 2560 [153]"150 FOR T=0 TO 500: TT=T/50 ":[141]2690 2565 [153]"160 X0=T/2:Y0=T/3 ":[141]2700 2566 [153]"161 X3=250-T/2:Y3=200-T/3 ":[141]2710 2567 [153]"162 X7=150+100*SIN(TT):Y7=100+50*COS(TT)":[141]2720 2570 [153]"170 POKE V+2*0,X0:POKE V+2*0+1,Y0 ":[141]2730 2575 [153]"171 POKE V+2*3,X3:POKE V+2*3+1,Y3 ":[141]2740 2576 [153]"172 POKE V+2*7,X7:POKE V+2*7+1,Y7 ":[141]2750 2580 [153]"180 NEXT T " 2590 [141]2760:[141]12500:MS$[178]" WHEE!!":[141]63100:[141]63000:[137]2800 2600 [153]"PUT DATA INTO BLOCK 'B'":[141]63000:[142] 2610 [153]"TELL WHERE #0 SHAPE IS ":[141]63000:[142] 2620 [153]"TELL WHERE #3 SHAPE IS ":[141]63000:[142] 2630 [153]"TELL WHERE #7 SHAPE IS ":[141]63000:[142] 2640 [153]"REMEMBER THIS NUMBER!!!":[141]63000:[142] 2650 [153]"POKE V+39+N & N=0..OK? ":[141]63000:[142] 2660 [153]"POKE V+39+N & N=3..OK! ":[141]63000:[142] 2670 [153]".....WHAT ELSE?....... ":[141]63000:[142] 2680 [153]"TURN THEM ALL ON!!!!!!!":[141]63000:[142] 2690 [153]"NOW,FOR 500 STEPS OR SO":[141]63000:[142] 2700 [153]"DEFINE X- AND Y-POS'NS.":[141]63000:[142] 2710 [153]"FOR #3 TOO ":[141]63000:[142] 2720 [153]"AND #7...!?* ":[141]63000:[142] 2730 [153]"MOVE SPRITE #0 ":[141]63000:[142] 2740 [153]"MOVE SPRITE #3 ":[141]63000:[142] 2750 [153]"MOVE SPRITE #7 ":[141]63000:[142] 2760 [153]"ON TO NEXT T. ":[141]63000:[142] 2800 [153]"LOADSTOPOF COURSE WE COULD HAVE THE SPRITES" 2810 [153]"EACH A DIFFERENT SHAPE." 2820 [153]"WE COULD:" 2830 [153]"FORI=0TO62:READ X:POKE64*B0+I,X:NEXT" 2840 [153]"FORI=0TO62:READ X:POKE64*B3+I,X:NEXT" 2850 [153]"FORI=0TO62:READ X:POKE64*B7+I,X:NEXT" 2860 [153]"AND HAVE B0, B3 AND B7 ALL DIFFERENT" 2870 [153]"THEN WE'D TELL THE C64 WHERE THEY ARE:" 2880 [153]"POKE2040+0,B0" 2881 [153]"POKE2040+3,B3" 2882 [153]"POKE2040+7,B7" 2885 MS$[178]" 2040+NWAIT":[141]63100 2890 [141]63000 2900 [153]"LOADLET'S PLAY WITH THE SPRITE CREATED WITH:" 2910 [153]" 99 B=13:N=3 " 2920 [153]"100 FORI=0TO62:X=240:POKE64*B+I,X:NEXT " 2930 [153]"110 ETC. ETC. ETC. " 2940 N[178]3:B[178]13:T0[178]500:T1[178]500:[141]4100 2950 [141]63000 2955 [153]"TO CHANGE IT'S SIZE" 2956 [153]"WE POKE ANOTHER V+SOMETHINGWAIT REGISTER!":[141]63000 2960 [153]"LOADWE'LL EXPAND THE X-DIMENSION:" 2970 [153]" POKE V+29,2^N ":[141]63000:[151]V[170]29,2[174]N 2980 [153]"WE'LL EXPAND THE Y-DIMENSION:" 2990 [153]" POKE V+23,2^N ":[141]63000:[151]V[170]23,2[174]N 3000 [153]"WE'LL SHRINK THE X-DIMENSION:" 3010 [153]" POKE V+29,0 ":[141]63000:[151]V[170]29,0 3020 [153]"WE'LL SHRINK THE Y-DIMENSION:" 3030 [153]" POKE V+23,0 ":[141]63000:[151]V[170]23,0 3040 [141]63000:[151]V[170]21,0 3050 [153]"LOADWHAT ABOUT THIS READ X:POKE 832+I,XWAIT?" 3060 [153]"READ WHAT?" 3070 [153]"A SPRITE, REMEMBER, IS 24 PIXELS WIDE." 3080 [153]"THAT'S 3WAIT BYTES WHICH THEN GIVE THE" 3090 [153]"FIRSTWAIT OF 21 ROWS OF PIXEL INFORMATION." 3100 [153]"IF THE 3 BYTES WERE 255,85 AND 8" 3200 [153]"WHICH,IN BINARY LOOK LIKE A STRING" 3210 [153]"OF 1'S AND 0'S, NAMELY:" 3220 [153]"11111111 & 01010101 & 00001000" 3225 [153]"OR, SIDE BY SIDE:" 3226 [153]"111111110101010100001000" 3227 [141]63000 3228 [153]"LOAD111111110101010100001000" 3230 [153]"THEN THE FIRST ROW OF PIXELS WOULD BE:" 3240 [153]"(null)(null)(null)(null)(null)(null)(null)(null) (null) (null) (null) (null) (null) " 3250 [141]63000 3260 [153]"SEE!":[141]63000 3270 [153]"111111110101010100001000" 3275 [153]"^^^^^^^^ ^ ^ ^ ^ ^ " 3280 [153]"(null)(null)(null)(null)(null)(null)(null)(null) (null) (null) (null) (null) (null) ":[141]63000 3290 [153]"IF THE NEXT 3 BYTES IN THE" 3300 [153]"BLOCK OF MEMORY WHICH HAS THE 'SHAPE'" 3310 [153]"WERE 170,0,170 THEN:":[141]63000 3320 [153]"101010100000000010101010" 3330 [153]"(null) (null) (null) (null) (null) (null) (null) (null) " 3335 [153]"":[141]63000 3340 [153]"LOADLET'S MAKE A PACMANWAIT:":[141]63000:[153]"LOAD":[141]7000:[141]6900 3350 [141]63000:[153]"NOW..." 3360 [153]"IN BINARY!":[141]63000:T[178]200 3400 [153]" 000000001111111100000000 3401 FORI=1TOT:NEXT 3410 PRINT" 000001111111111110000000 3411 [129]I[178]1[164]T:[130] 3420 [153]" 000011111111111111000000 3421 FORI=1TOT:NEXT 3430 PRINT" 000111111111111111100000 3431 [129]I[178]1[164]T:[130] 3440 [153]" 001111110000011111110000 3441 FORI=1TOT:NEXT 3450 PRINT" 011111110000011111111000 3451 [129]I[178]1[164]T:[130] 3460 [153]" 111111110111011111110000 3461 FORI=1TOT:NEXT 3470 PRINT" 111111110111011111100000 3471 [129]I[178]1[164]T:[130] 3480 [153]" 111111111111111111000000 3481 FORI=1TOT:NEXT 3490 PRINT" 111111111111111110000000 3491 [129]I[178]1[164]T:[130] 3500 [153]" 111111111111111100000000 3501 FORI=1TOT:NEXT 3510 PRINT" 111111111111111100000000 3511 [129]I[178]1[164]T:[130] 3520 [153]" 011111111111111110000000 3521 FORI=1TOT:NEXT 3530 PRINT" 001111111111111111000000 3531 [129]I[178]1[164]T:[130] 3540 [153]" 000111111111111111100000 3541 FORI=1TOT:NEXT 3550 PRINT" 000011111111111111110000 3551 [129]I[178]1[164]T:[130] 3560 [153]" 000001111111111111111000 3561 FORI=1TOT:NEXT 3570 PRINT" 000000011111111111111100 3571 [129]I[178]1[164]T:[130] 3580 [153]" 000000000111111111111000 3581 FORI=1TOT:NEXT 3590 PRINT" 000000000001111110000000 3591 [129]I[178]1[164]T:[130] 3600 [153]" 000000000000111000000000 3601 FORI=1TOT:NEXT 3610 GOSUB63000:PRINT"PICK OUT" 3620 PRINT"THE BYTES!":GOSUB63000:T=200 3630 PRINT" <[192][192][192]0[192][192]><[192]255[192][192]><[192][192][192]0[192][192]> 3631 [129]I[178]1[164]T:[130] 3640 [153]" 3641 FORI=1TOT:NEXT 3650 PRINT" <[192][192]15[192][192]><[192]255[192][192]><[192]192[192][192]> 3651 [129]I[178]1[164]T:[130] 3660 [153]" 3661 FORI=1TOT:NEXT 3670 PRINT" <[192][192]63[192][192]><[192][192][192]7[192][192]><[192]240[192][192]> 3671 [129]I[178]1[164]T:[130] 3680 [153]" 3681 FORI=1TOT:NEXT 3690 PRINT" <[192]255[192][192]><[192]119[192][192]><[192]240[192][192]> 3691 [129]I[178]1[164]T:[130] 3700 [153]" 3701 FORI=1TOT:NEXT 3710 PRINT" <[192]255[192][192]><[192]255[192][192]><[192]192[192][192]> 3711 [129]I[178]1[164]T:[130] 3720 [153]" 3721 FORI=1TOT:NEXT 3730 PRINT" <[192]255[192][192]><[192]255[192][192]><[192][192][192]0[192][192]> 3731 [129]I[178]1[164]T:[130] 3740 [153]" 3741 FORI=1TOT:NEXT 3750 PRINT" <[192]127[192][192]><[192]255[192][192]><[192]128[192][192]> 3751 [129]I[178]1[164]T:[130] 3760 [153]" 3761 FORI=1TOT:NEXT 3770 PRINT" <[192][192]31[192][192]><[192]255[192][192]><[192]224[192][192]> 3771 [129]I[178]1[164]T:[130] 3780 [153]" 3781 FORI=1TOT:NEXT 3790 PRINT" <[192][192][192]7[192][192]><[192]255[192][192]><[192]248[192][192]> 3791 [129]I[178]1[164]T:[130] 3800 [153]" 3801 FORI=1TOT:NEXT 3810 PRINT" <[192][192][192]0[192][192]><[192]127[192][192]><[192]248[192][192]> 3811 [129]I[178]1[164]T:[130] 3820 [153]" 3821 FORI=1TOT:NEXT 3830 PRINT" <[192][192][192]0[192][192]><[192][192]14[192][192]><[192][192][192]0[192][192]> 3831 [129]I[178]1[164]T:[130] 3850 [141]63000:[153]"NOW... " 3851 [153]"PUT THESE " 3852 [153]"NUMBERS " 3853 [153]"INTO DATA " 3854 [153]"STATEMENTS" 3855 [153]"..THEN.. " 3856 [153]" READ " 3857 [153]" AND " 3858 [153]" POKE " 3860 [141]63000:[153]"LOAD" 3865 [153]"100 FORI=0TO62:READ X:POKE832+I,X:NEXT " 3870 [153]"101 DATA 0,255,0" 3880 [153]"102 DATA 7,255,128" 3890 [153]"103 DATA 15,255,192 3900 PRINT"... ETC. ETC. ETC." 3910 PRINT"121 DATA 0,14,0" 3920 MS$=" SIMPLE!":GOSUB63100 3930 GOSUB63000:PRINT"[147]LET'S DO IT:":Q$="":GOSUB3931:GOTO10000 3931 PRINT""Q$"100 FORI=0TO62:READ X:POKE832+I,X:NEXT " 3932 PRINTQ$"200 POKE2040+3,13: REM WHERE SHAPE IS ":IFGG=1THEN3934 3933 PRINTQ$"300 V=53248: REM VIDEO CHIP BASE " 3934 PRINTQ$"400 POKE V+39+3,10:REM RED SPRITE #3 " 3935 PRINTQ$"500 X=250:Y=200: REM PICK A POSITION " 3936 PRINTQ$"600 POKE V+2*3,X:POKE V+2*3+1,Y ":IFGG=1THENRETURN 3937 PRINTQ$"700 POKEV+21,2^3: REM ENABLE SPRITE #3":RETURN 3940 DATA0,255,0,7,255,128,15,255,192,31,255,224,63,7,240,127,7,248,255,119,240 3941 DATA255,119,224,255,255,192,255,255,128,255,255,0,255,255,0,127,255,128 3942 DATA63,255,192,31,255,224,15,255,240,7,255,248,1,255,252,0,127,248 3943 DATA0,31,128,0,14,0 4000 REM SPRITES 4010 B=13:REM BLOCK 13 4020 N=3 :REM SPRITE #0 4030 T0=0:T1=500:GOSUB4100:RETURN 4100 FORI=0TO62:X=240:POKE64*B+I,X:NEXT 4110 POKE2040+N,B: REM WHERE SHAPE IS 4120 V=53248: REM VIDEO CHIP BASE 4130 POKE V+39+N,10:REM RED SPRITE 4135 POKE V+2*N,0:POKE V+2*N+1,0 4136 POKE V+29,0:POKE V+23,0 4140 POKEV+21,2^N: REM ENABLE SPRITE 4150 FOR T=T0 TO T1 STEP 5 4160 X=T/2:Y=100+T/5 4170 POKE V+2*N,X:POKE V+2*N+1,Y 4180 NEXT T 4190 RETURN 5000 PRINT"[147]":MS$="AU REVOIR!":GOSUB63100 5010 PRINT"LOAD"CHR$(34)">SPRITES-2"CHR$(34)",8":PRINT"RUN":END 6900 PRINT" 111111111122222 " 6901 PRINT" 123456789012345678901234 " 6902 PRINT" 1" 6903 PRINT" 2" 6904 PRINT" 3" 6905 PRINT" 4" 6906 PRINT" 5" 6907 PRINT" 6" 6908 PRINT" 7" 6909 PRINT" 8" 6910 PRINT" 9" 6911 PRINT"10" 6912 PRINT"11" 6913 PRINT"12" 6914 PRINT"13" 6915 PRINT"14" 6916 PRINT"15" 6917 PRINT"16" 6918 PRINT"17" 6919 PRINT"18" 6920 PRINT"19" 6921 PRINT"20" 6922 PRINT"21" 6923 RETURN 7000 PRINT" [209][209][209][209][209][209][209][209] 7001 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null) 7002 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209][209][209] 7003 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null) 7004 PRINT" [209][209][209][209][209][209] [209][209][209][209][209][209][209] 7005 [153]" (null)(null)(null)(null)(null)(null)(null) (null)(null)(null)(null)(null)(null)(null)(null) 7006 PRINT" [209][209][209][209][209][209][209][209] [209][209][209] [209][209][209][209][209][209][209] 7007 [153]" (null)(null)(null)(null)(null)(null)(null)(null) (null)(null)(null) (null)(null)(null)(null)(null)(null) 7008 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209] 7009 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null) 7010 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209] 7011 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null) 7012 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209] 7013 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null) 7014 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209] 7015 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null) 7016 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209] 7017 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null) 7018 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209] 7019 [153]" (null)(null)(null)(null)(null)(null)(null)(null) 7020 PRINT" [209][209][209][209][209][209] 7021 [142] 10000 [141]63000:[153]"LOADBETTER STILL..LET'S ENABLE" 10010 [153]"SPRITE #3 SO WE CAN SEEWAIT IT HAPPEN!" 10020 [153]"WE'LL SET V=53248WAIT" 10030 [153]"AND WE'LL POKE V+21,2^3" 10040 [153]"THEN WE'LL RUN THE PROGRAM:":GG[178]1:[141]3931:Q$[178]"WAIT" 10050 [141]63000:[153]"LOAD":[141]3931:[141]63000:V[178]53248 10051 [129]I[178]0[164]62:[151]832[170]I,240:[130] 10055 [151]V[170]6,250:[151]V[170]7,200:[151]V[170]29,0:[151]V[170]23,0:[151]V[170]21,8 10060 [153]"100 FORI=0TO62:READ X:POKE832+I,X:NEXT " 10065 [140]:[129]I[178]0[164]62:[135] X:[151]832[170]I,X:[130] 10070 [153]"200 POKE2040+3,13WAIT: TELL WHERE SHAPE IS" 10075 [151]2040[170]3,13:[141]10500 10080 [153]"400 POKE V+39+3,1WAIT: SPRITE #3 IS WHITE " 10085 [151] V[170]39[170]3,1:[141]10500 10090 [153]"500 X=200:Y=150WAIT: PICK A POSITION " 10095 X[178]200:Y[178]150:[141]10500 10100 [153]"600 POKE V+2*3,X:POKE V+2*3+1,Y" 10105 [151] V[170]2[172]3,X:[151] V[170]2[172]3[170]1,Y:[141]10500 10110 [153]"LOADPICK A COLOUR # (0 TO 15)";:[133] C$:C[178][197](C$) 10120 [139] C[179]0 [176] C[177]15 [167]10110 10130 [151]V[170]39[170]3,C:[141]63000:[151]V[170]39[170]3,1:[153]"WE DID N=3:POKEV+39+N,"C 10135 [141]63000 10140 [153]"PICK AN X-POSITION";:[133] X$:X%[178][197](X$):[139]X%[179]0[176]X%[177]355[167]10140 10145 [139]X%[177]255[167] XH%[178]8:X%[178]X%[171]256 10150 [151]V[170]2[172]3,X%:[151]V[170]16,XH% 10155 [153]"WE DID: N=3:POKEV+2*N,"X%":POKEV+16,"XH%:[141]63000 10160 [151]V[170]16,0:[151]V[170]2[172]3,150:[151]V[170]39[170]3,1 10170 [153]"WHAT WILL POKE V+29,2^3WAIT DO?":[141]63000:[151]V[170]29,8 10180 [153]"WHAT WILL POKE V+23,2^3WAIT DO?":[141]63000:[151]V[170]23,8 10499 [137]11000 10500 [129]J[178]1[164]3:[153]" ":[129]K[178]1[164]100:[130]:[153]"DONE!" 10510 [153]"DONE!":[129]K[178]1[164]100:[130]:[130]:[141]63000 10520 [142] 11000 [141]63000:MS$[178]"AU REVOIR!":[153]"LOAD":[141]63100 11010 [153]"POKE 53248+21,0:REM TURN OFF!":[128] 12500 [143] SPRITES 12510 [129]I[178]0[164]62:X[178]240:[151]832[170]I,X:[130] 12520 [151]2040,13:[151]2040[170]3,13:[151]2040[170]7,13 12530 V[178]53248:[151] V[170]39,10:[151]V[170]39[170]3,1:[151]V[170]39[170]7,14 12540 [151]V[170]21,1[170]8[170]128 12560 [129] T[178]0 [164] 500 [169] 5 12565 X0[178]T[173]2:Y0[178]T[173]3 12566 X3[178]250[171]T[173]2:Y3[178]200[171]T[173]3 12567 X7[178]150[170]100[172][191](T[173]50):Y7[178]100[170]50[172][190](T[173]50) 12570 [151] V[170]2[172]0,X0:[151] V[170]2[172]0[170]1,Y0 12575 [151] V[170]2[172]3,X3:[151] V[170]2[172]3[170]1,Y3 12576 [151] V[170]2[172]7,X7:[151] V[170]2[172]7[170]1,Y7 12580 [130] T:[151]V[170]21,0:[142] 60000 [143] INITIALIZE 60001 BT$[178]"":[129]I[178]1[164]24:BT$[178]BT$[170]"":[130] 60002 PT$[178]"ORTANTANTANTANTANTANTANTANTANTAN^CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)(null)CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD/=TANTANTANTANTANTANTANTAN=EXP" 60003 PT$[178]PT$[170]"CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB((null)CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDFN============STOPTHEN" 60004 PT$[178]PT$[170]"CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)(null)TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB((null)(null)ONONONONCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD" 60005 PT$[178]BT$[170]"ONONONONONON"[170]PT$ 60007 ML$[178]"" 60008 WD[178]40:CRT[178]1024 60009 W2[178]WD[173]2:W3[178]WD[171]1:W1$[178][202]([196](WD),2):[151]53281,15:[151]53280,12:[153]"STOP" 60010 V[178]53248:[129]I[178]0[164]16:[151]V[170]I,0:[130] 60011 [151]V[170]23,0:[151]V[170]29,0:[129]I[178]0[164]7:[151]V[170]39[170]I,0:[130] 60020 [142] 62000 [141]63000 62001 [153]SD$CL$:[153]CL$:[153]CL$ 62003 [142] 63000 [153]"STOPHIT RETURNWAIT TO CONTINUE"; 63001 [161]A$:[139]A$[179][177]""[167]63001 63002 [161]A$:[139]A$[178]""[167]63002 63003 [142] 63100 [129]T[178]1[164]5:[153]PT$MS$; 63101 [153]PT$" "; 63102 [153]PT$MS$;:[130] 63103 [153]"STOP":[142] 63900 SD$[178]"":CL$[178]"WAIT WAIT" 63901 SR$[178]"" 63902 [142]